//package com.yf.tz.service.impl;
//
//import com.yf.jssdk.SdkApi;
//import com.yf.service.WxInfoService;
//import com.yf.tz.dao.*;
//import com.yf.tz.entity.*;
//import com.yf.tz.enums.AccountTypeEnum;
//import com.yf.tz.service.NoticeService;
//import com.yf.tz.vo.AccountRecordVo;
//import lombok.extern.log4j.Log4j2;
//import org.springframework.beans.factory.annotation.Autowired;
//
//import javax.xml.ws.soap.Addressing;
//import java.math.BigDecimal;
//import java.util.Arrays;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//@Log4j2
//public class NoticeServiceImpl implements NoticeService {
//
//    @Addressing
//    private MallOrderDao mallOrderDao;
//
//    @Autowired
//    private AccountRecordDao recordDao;
//
//    @Autowired
//    private SaleOrderDao saleOrderDao;
//
//    @Autowired
//    private SaleItemDao saleItemDao;
//
//    @Autowired
//    private SaleShopDao saleShopDao;
//
//
//    @Autowired
//    private UserDao userDao;
//
//    @Autowired
//    private MallItemDao mallItemDao;
//
//    @Autowired
//    private WxInfoService wxInfoService;
//
//    @Override
//    public void deliver(Long orderId) {
//        try {
//            String temId = "coS2l8xGoavElSkFU0TP4JB7UC8H0FeNpv0k2fOao4Y";
//            MallOrderEntity orderEntity = mallOrderDao.get(orderId);
//            UserEntity toUser = userDao.get(orderEntity.getUserId());
//            String page = "/pages/mall/order/index";
//            Map<String, Object> data = new HashMap<>();
//            data.put("character_string1", new SubscribeData(orderEntity.getOrderNo()));
//            data.put("time2", new SubscribeData(orderEntity.getSendTime()));
//            data.put("thing3", new SubscribeData(orderEntity.getLogCompany()));
//            data.put("character_string4", new SubscribeData(orderEntity.getLogNo()));
//            StringBuffer sb = new StringBuffer();
//            List<MallItemEntity> items = mallItemDao.findByOrderId(orderId);
//            items.forEach(item -> {
//                String skuName = "";
//                if (item.getSkuName() != null) {
//                    skuName = item.getSkuName();
//                }
//                sb.append(item.getName() + skuName).append("X").append(item.getQuantity()).append(" ");
//            });
//            data.put("thing6", sb.toString());
//            String res = SdkApi.sendSubscribeMessage(wxInfoService.getWxAppInfo().getToken(), toUser.getOpenId(), temId, page, data);
//            log.info("发货通知结果:", res);
//        } catch (Exception e) {
//            log.error("发货通知异常:", e.getMessage());
//        }
//    }
//
//    @Override
//    public void newFriend(Long userId) {
//        try {
//            String temId = "n3hhiz62K4p8Db9x7YPBxQqtonppMN-AEqWwF36eF8E";
//            UserEntity user = userDao.get(userId);
//            UserEntity topUser = userDao.get(user.getPid());
//            if (topUser == null) return;
//            String page = "/pages/user/index";
//            Map<String, Object> data = new HashMap<>();
//            data.put("thing1", new SubscribeData(user.getName()));
//            data.put("date2", new SubscribeData(user.getTime()));
//            //TODO 奖励
//            data.put("thing3", "");
//            data.put("thing4", "");
//            String res = SdkApi.sendSubscribeMessage(wxInfoService.getWxAppInfo().getToken(), topUser.getOpenId(), temId, page, data);
//            log.info("邀请好友通知结果:" + res);
//        } catch (Exception e) {
//            log.error("邀请好友通知异常:" + e.getMessage());
//        }
//    }
//
//    @Override
//    public void recharge(Long aid, BigDecimal sendAmount) {
//        try {
//            String temId = "igLRb74-srqxMCH4NKI6pvntOrltJ59IsqEKcrbQXg8";
//            AccountRecordVo accountRecordVo = recordDao.getVo(aid);
//            String page = "/pages/account/record";
//            Map<String, Object> data = new HashMap<>();
//            data.put("character_string1", new SubscribeData(accountRecordVo.getRecord().getOrderNo()));
//            data.put("amount3", new SubscribeData(accountRecordVo.getRecord().getAmount()));
//            data.put("amount4", new SubscribeData(sendAmount));
//            data.put("date5", new SubscribeData(accountRecordVo.getRecord().getTime()));
//            data.put("amount6", new SubscribeData(accountRecordVo.getRecord().getToNowAmount()));
//            String res = SdkApi.sendSubscribeMessage(wxInfoService.getWxAppInfo().getToken(), accountRecordVo.getToUser().getOpenId(), temId, page, data);
//            log.info("充值通知结果:" + res);
//        } catch (Exception e) {
//            log.error("充值通知异常:" + e.getMessage());
//        }
//    }
//
//    @Override
//    public void adminOrder(Long orderId) {
//        try {
//            String temId = "SiFkPlR6aWw3I_CIrCgIK1xVHm2i-kNfjieiW2stSoE";
//            SaleOrderVo saleOrderEntity = saleOrderDao.getVo(orderId);
//            String page = "/pages/sale/order/index";
//            Map<String, Object> data = new HashMap<>();
//            data.put("thing1", new SubscribeData(saleOrderEntity.getShop().getName()));
//            List<SaleItemEntity> items = saleItemDao.findByOrderId(orderId);
//            StringBuffer sb = new StringBuffer();
//            items.forEach(item -> {
//                String skuName = "";
//                if (item.getSkuName() != null) {
//                    skuName = item.getSkuName();
//                }
//                sb.append(item.getName() + skuName).append("X").append(item.getQuantity()).append(" ");
//            });
//            data.put("thing2", new SubscribeData(sb.toString()));
//            data.put("thing3", new SubscribeData(SaleOrderTypeEnum.indexOf(saleOrderEntity.getSaleOrder().getType())));
//            data.put("thing4", new SubscribeData(saleOrderEntity.getEntity().getRemark()));
//            data.put("thing5", new SubscribeData("已经接单"));
//            //通知管理员
//            String manager = saleOrderEntity.getShop().getManager();
//            if (manager != null && !manager.equals("")) {
//                Arrays.stream(manager.split("_")).forEach(srt -> {
//                    String res = SdkApi.sendSubscribeMessage(wxInfoService.getWxAppInfo().getToken(), saleOrderEntity.getUser().getOpenId(), temId, page, data);
//                    log.info("堂食通知结果:" + res);
//                });
//            }
//        } catch (Exception e) {
//            log.error("堂食通知异常:" + e.getMessage());
//        }
//    }
//
//    @Override
//    public void newOrder(Long orderId, int type) {
//        String temId = "75H7YN8gD2BwAVzxagOuW9I0GLCUheIP5Gb_5Pjqibg";
//        String page;
//        if (type == 0) {//商城订单
//            page = "/pages/mall/order/index";
//            MallOrderEntity orderEntity = mallOrderDao.get(orderId);
//            Map<String, Object> data = new HashMap<>();
//            data.put("date4", new SubscribeData(orderEntity.getOrderTime()));
//            StringBuffer sb = new StringBuffer();
//            List<MallItemEntity> items = mallItemDao.findByOrderId(orderId);
//            items.forEach(item -> {
//                String skuName = "";
//                if (item.getSkuName() != null) {
//                    skuName = item.getSkuName();
//                }
//                sb.append(item.getName() + skuName).append("X").append(item.getQuantity()).append(" ");
//            });
//            data.put("thing5", new SubscribeData(sb.toString()));
//            data.put("phrase9", "商城订单");
//            data.put("amount12", new SubscribeData(orderEntity.getPrice()));
//            data.put("thing22", new SubscribeData("童仔美食"));
//            UserEntity userEntity = userDao.get(orderEntity.getUserId());
//            String res = SdkApi.sendSubscribeMessage(wxInfoService.getWxAppInfo().getToken(), userEntity.getOpenId(), temId, page, data);
//            log.info("新订单通知结果:" + res);
//        } else {
//            page = "/pages/sale/order/index";
//            SaleOrderEntity orderEntity = saleOrderDao.get(orderId);
//            Map<String, Object> data = new HashMap<>();
//            data.put("date4", new SubscribeData(orderEntity.getOrderTime()));
//            StringBuffer sb = new StringBuffer();
//            List<SaleItemEntity> items = saleItemDao.findByOrderId(orderId);
//            items.forEach(item -> {
//                String skuName = "";
//                if (item.getSkuName() != null) {
//                    skuName = item.getSkuName();
//                }
//                sb.append(item.getName() + skuName).append("X").append(item.getQuantity()).append(" ");
//            });
//            data.put("thing5", new SubscribeData(sb.toString()));
//            data.put("phrase9", "堂食订单");
//            data.put("amount12", new SubscribeData(orderEntity.getPrice()));
//            SaleShopEntity saleShopEntity = saleShopDao.get(orderEntity.getShopId());
//            data.put("thing22", new SubscribeData(saleShopEntity.getName()));
//            UserEntity userEntity = userDao.get(orderEntity.getUserId());
//            String res = SdkApi.sendSubscribeMessage(wxInfoService.getWxAppInfo().getToken(), userEntity.getOpenId(), temId, page, data);
//            log.info("新订单结果:" + res);
//        }
//    }
//
//    @Override
//    public void account(Long aid) {
//        try {
//            String temId = "nSqQBggkpOQrqSP0c0otDdAjcZkEginkOv8oeu-Wy0U";
//            String page = "/pages/account/record";
//            AccountRecordEntity entity = recordDao.get(aid);
//            Map<String, Object> map = new HashMap<>();
//            map.put("thing3", new SubscribeData(entity.getInfo()));
//            map.put("character_string7", new SubscribeData(AccountTypeEnum.indexOf(entity.getType())));
//            String amount1 = entity.getToNowAmount().toString();
//            String amount2 = entity.getAmount().toString();
//            map.put("amount1", amount1);
//            map.put("amount2", amount2);
//            UserEntity userEntity = userDao.get(entity.getToUserId());
//            //通知到账人
//            String res = SdkApi.sendSubscribeMessage(wxInfoService.getWxAppInfo().getToken(), userEntity.getOpenId(), temId, page, map);
//            log.info("到账人账户通知结果:" + res);
//            //通知转出人
//            userEntity = userDao.get(entity.getFromUserId());
//            amount1 = entity.getFromNowAmount().toString();
//            amount2 = "-" + amount2;
//            map.put("amount1", amount1);
//            map.put("amount2", amount2);
//            res = SdkApi.sendSubscribeMessage(wxInfoService.getWxAppInfo().getToken(), userEntity.getOpenId(), temId, page, map);
//            log.info("转账人账户通知结果:" + res);
//        } catch (Exception e) {
//            log.info("账户通知异常:" + e.getMessage());
//        }
//    }
//}
//
//class SubscribeData {
//
//    private Object value;
//
//    public SubscribeData(Object value) {
//        this.value = value;
//    }
//}
